import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            redirect: '/noteClass'
        },
        {
            path: '/login',
            name: 'login',
            component: () => import('@/views/Login.vue'),
            meta: {
                title: '登录'
            }
        },
        {
            path: '/register',
            name: 'register',
            component: () => import('@/views/Register.vue'),
            meta: {
                title: '注册'
            }
        },
        {
            path: '/noteClass',
            name: 'noteClass',
            component: () => import('@/views/NoteClass.vue'),
            meta: {
                title: '日记分类'
            }
        },
        {
            path: '/noteList',
            name: 'noteList',
            component: () => import('@/views/NoteList.vue'),
            meta: {
                title: '日记列表'
            }
        },
        {
            path: '/noteDetail',
            name: 'noteDetail',
            component: () => import('@/views/NoteDetail.vue'),
            meta: {
                title: '日记详情'
            }
        },
        {
            path: '/notePublish',
            name: 'notePublish',
            component: () => import('@/views/NotePublish.vue'),
            meta: {
                title: '日记发布'
            }
        }
    ]
})

// 设置页面白名单，登入和注册页面开放给用户直接访问
const whitePath = ['/login', '/register']
// 全局路由守卫————前置守卫
router.beforeEach((to, from, next) => {

    document.title = to.meta.title

    // 用户访问的地址在不在白名单中
    if (!whitePath.includes(to.path)) {
        // 判断本地有无用户数据
        if (!localStorage.getItem('userInfo')) {
            router.push('/login')
            return
        }
        // 如果本地有数据，说明用户已经登录过
        next()  // 放行
        return
    }
    // 如果用户访问的是白名单中的地址，直接放行
    next()
})

export default router
